1 using System.Collections;
2 using
System.Collections.Generic;
3 using
UnityEngine;
4
5 public
class BishopMovement : Movement, IPieceMovement {
6
7     
public BishopMovement(GCPlayer player, Piece piece) : base(player,piece) {
8         BoundComputations += ComputeBound;
9     }
10
11     
public override void ComputeBound() {
12         Node currNode = piece.Node;
13         
int origRow = currNode.row;
14         
int origCol = currNode.col;
15         
16         Grid grid = GameManager.Instance.Grid;
17
18         
//right-up
19         
for (int ru = 1; ru + origRow < grid.Rows && ru + origCol < grid.Cols; ru++) {
20             
int newRow = ru + origRow;
21             
int newCol = ru + origCol;
22             Node newNode = grid.GetNodeAt(newRow, newCol);
23             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
24         }
25
26         
//left-up
27         
for (int lu = -1; origRow - lu < grid.Rows && lu + origCol >= 0; lu--) {
28             
int newRow = origRow - lu;
29             
int newCol = lu + origCol;
30             Node newNode = grid.GetNodeAt(newRow, newCol);
31             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
32         }
33
34         
//right-bot
35         
for (int rb = 1; origRow - rb >= 0 && rb + origCol < grid.Cols; rb++) {
36             
int newRow = origRow - rb;
37             
int newCol = rb + origCol;
38             Node newNode = grid.GetNodeAt(newRow, newCol);
39             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
40         }
41
42         
//left-bot
43         
for (int lb = -1; lb + origRow >= 0 && lb + origCol >= 0; lb--) {
44             
int newRow = lb + origRow;
45             
int newCol = lb + origCol;
46             Node newNode = grid.GetNodeAt(newRow, newCol);
47             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
48         }
49     }
50     
51 }


right-up

left-up

right-bot

left-bot



Gõ tìm kiếm nhanh...